﻿using Microsoft.Data.Edm;
using System;
namespace Microsoft.Data.OData.VerboseJson
{
    /// <summary>
    /// Interface representing a state of the Verbose JSON reader for entry.
    /// </summary>
    internal interface IODataVerboseJsonReaderEntryState
    {
        /// <summary>
        /// The entry being read.
        /// </summary>
        ODataEntry Entry
        {
            get;
        }
        /// <summary>
        /// The entity type for the entry (if available)
        /// </summary>
        IEdmEntityType EntityType
        {
            get;
        }
        /// <summary>
        /// Flag which indicates that during parsing of the entry represented by this state,
        /// the __metadata property was already found.
        /// </summary>
        bool MetadataPropertyFound
        {
            get;
            set;
        }
        /// <summary>
        /// If the reader finds a navigation link to report, but it must first report the parent entry
        /// it will store the navigation link in this property. So this will only ever store the first navigation link of an entry.
        /// </summary>
        ODataNavigationLink FirstNavigationLink
        {
            get;
            set;
        }
        /// <summary>
        /// If the reader finds a navigation link to report, but it must first report the parent entry
        /// it will store the navigation property in this property. So this will only ever store the first navigation proeprty of an entry.
        /// </summary>
        IEdmNavigationProperty FirstNavigationProperty
        {
            get;
            set;
        }
        /// <summary>
        /// The duplicate property names checker for the entry represented by the current state.
        /// </summary>
        DuplicatePropertyNamesChecker DuplicatePropertyNamesChecker
        {
            get;
        }
    }
}
